/**
 * 
 */
package backend;

import java.util.ArrayList;
import java.util.Collections;

import gui.HauptFenster;
import helden.plugin.werteplugin.PluginZauberInfo;
import helden.plugin.werteplugin2.PluginHeld2;
import helden.plugin.werteplugin3.PluginHeldenWerteWerkzeug3;

/**
 * @author Christian
 * @since 0.1
 */
public class DatenController {
	
	/**
	 * 
	 */
	private PluginHeld2[] helden = null;
	
	/**
	 * 
	 */
	private Xml xml = new Xml(this);
	
	/**
	 * 
	 */
	private PluginHeldenWerteWerkzeug3 werteWergzeug = null;
	
	/**
	 * 
	 */
	private ArrayList<AktiverZauber> zauberList = new ArrayList<AktiverZauber>();
	
	/**
	 * 
	 */
	private ArrayList<TextBausteine> textBausteinList = new ArrayList<TextBausteine>();
	
	/**
	 * 
	 */
	private ArrayList<ZauberVariante> zauberVariantenList = new ArrayList<ZauberVariante>();
	
	/**
	 * 
	 * @param phww
	 *            HeldenWerteWergzeug
	 * @param helden
	 *            Alle Helden
	 */
	public DatenController(PluginHeldenWerteWerkzeug3 phww, PluginHeld2[] helden) {

		this.helden = helden;
		this.werteWergzeug = phww;
		zauberEinlesen();
		xml.laden();
	}
	
	/**
	 * 
	 * @return Alle Helden
	 */
	public PluginHeld2[] getHelden() {

		return helden;
	}
	
	/**
	 * 
	 * @param id
	 *            HledenId
	 * @return Held
	 */
	public PluginHeld2 getHeldById(String id) {

		for (PluginHeld2 held : helden) {
			if (held.getHeldenID().equals(id)) {
				return held;
			}
		}
		return null;
	}
	
	/**
	 * @param id
	 *            heldenId
	 * @return HeldenName
	 */
	public String getHeldenNameById(String id) {

		for (PluginHeld2 held : helden) {
			if (held.getHeldenID().equals(id)) {
				return held.toString();
			}
		}
		return "";
	}
	
	/**
	 * 
	 * @return Alle Varianten
	 */
	public ArrayList<TextBausteine> getAlleTextBausteine() {

		return textBausteinList;
	}
	
	/**
	 * Löscht den inhalt der VariantenLsite
	 */
	public void clearBausteinList() {

		textBausteinList.clear();
	}
	
	/**
	 * Fügt eine neue Variante hinzu
	 * 
	 * @param vari
	 *            VarianteToAdd
	 */
	public void addTextbaustein(TextBausteine vari) {

		textBausteinList.add(vari);
	}
	
	/**
	 * 
	 * @return Alle Aktiven Varianten
	 */
	public ArrayList<AktiverZauber> getAlleAktuellenVarianten() {

		return zauberList;
	}
	
	/**
	 * Liest die Zauber aus dem Heldentool ein
	 */
	private void zauberEinlesen() {

		for (PluginHeld2 held : helden) {
			werteWergzeug.setAktivenHeld(held);
			String[][] alleZauberAlsStrings = werteWergzeug.getZauberAlsString();
			for (int i = 0; i < alleZauberAlsStrings.length; i++) {
				PluginZauberInfo zauber = werteWergzeug.getZauberInfo(werteWergzeug.getZauber(
						alleZauberAlsStrings[i][0], alleZauberAlsStrings[i][1]));
				zauberList.add(new AktiverZauber(held.getHeldenID(), zauber));
			}
		}
	}
	
	/**
	 * 
	 * @return Gibt die Namen aller aktiven Zauber zurück
	 */
	public ArrayList<String> getAlleAktivenZauberNamen() {

		ArrayList<String> newList = new ArrayList<String>();
		for (AktiverZauber variante : zauberList) {
			String name = variante.getZauber().getZauberName();
			if (!newList.contains(name)) {
				newList.add(name);
			}
		}
		Collections.sort(newList);
		return newList;
	}
	
	/**
	 * 
	 * @param heldenId
	 *            HeldenId
	 * @param zauberName
	 *            ZauberName
	 * @param repraesentation
	 *            Repräsentaion
	 * @return AlleZauber für den Held
	 */
	public ArrayList<PluginZauberInfo> getZauberByNameUndHeldenId(String heldenId,
			String zauberName, String repraesentation) {

		ArrayList<PluginZauberInfo> newList = new ArrayList<PluginZauberInfo>();
		for (AktiverZauber vari : zauberList) {
			if (vari.getHeldenId().equals(heldenId)
					&& vari.getZauber().getZauberName().equals(zauberName)) {
				if (vari.getZauber().getRepraesentation().equals(repraesentation)
						|| "Alle".equals(repraesentation)) {
					newList.add(vari.getZauber());
				}
			}
		}
		return newList;
	}
	
	/**
	 * 
	 * @param zauberName
	 *            Zaubername
	 * @param repraesentation
	 *            Repräsentation
	 * @return AlleVarianten die zu den übergeben Namen passen.
	 */
	public ArrayList<AktiverZauber> getAlleHeldenMitDemZauber(String zauberName,
			String repraesentation) {

		ArrayList<AktiverZauber> newList = new ArrayList<AktiverZauber>();
		for (AktiverZauber vari : zauberList) {
			if (vari.getZauber().getZauberName().equals(zauberName)) {
				if (vari.getZauber().getRepraesentation().equals(repraesentation)
						|| "Alle".equals(repraesentation)) {
					newList.add(vari);
				}
			}
		}
		return newList;
	}
	
	/**
	 * 
	 * @param heldenId
	 *            HeldenId
	 * @return Liste mit allen Zaubern des übergebenden Helden
	 */
	public ArrayList<AktiverZauber> getAlleZauberByHeldenId(String heldenId) {

		ArrayList<AktiverZauber> newList = new ArrayList<AktiverZauber>();
		for (AktiverZauber vari : zauberList) {
			if (vari.getHeldenId().equals(heldenId)) {
				newList.add(vari);
			}
		}
		return newList;
	}
	
	/**
	 * Speichert alle Varianten im Xml File
	 */
	public void allesInXmlSpeichern() {

		xml.speichern(textBausteinList);
	}
	
	/**
	 * Speichert den Aktuell ausgewählten Zauber ins HeldenTool
	 * 
	 * @param aktiverZauber
	 *            Variante von dem Held, dessen Zauber gespeichert wird
	 * @param hauptFenster
	 *            Hauptfenster
	 */
	public void inHeldenSpeichern(AktiverZauber aktiverZauber, HauptFenster hauptFenster) {

		aktiverZauber.getZauber().setAnmerkungen(hauptFenster.getJAnmerkungTextArea().getText());
		aktiverZauber.getZauber().setKommentar(hauptFenster.getJKommentarTextArea().getText());
		aktiverZauber.getZauber().setKosten(hauptFenster.getJKostenTextArea().getText());
		aktiverZauber.getZauber().setWirkungsdauer(
				hauptFenster.getJWirkungsDauerTextArea().getText());
		aktiverZauber.getZauber().setZauberdauer(hauptFenster.getJZauberDauerTextArea().getText());
		aktiverZauber.getZauber().setReichweite(hauptFenster.getJReichweiteTextArea().getText());
	}
	
	/**
	 * 
	 * @param strings
	 *            Fügt die Textbausteine in die Liste ein
	 * @param zauberName
	 *            Zaubername
	 * @param repraesentation
	 *            Repräsentation
	 */
	public void setDaten(String[] strings, String zauberName, String repraesentation) {

		for (int i = 0; i < textBausteinList.size(); i++) {
			if (textBausteinList.get(i).is(zauberName, repraesentation)) {
				textBausteinList.get(i).setData(strings);
				return;
			}
		}
		textBausteinList.add(new TextBausteine(strings, zauberName, repraesentation));
	}
	
	/**
	 * 
	 * @param zauberName
	 *            Zaubername
	 * @param repraesentation
	 *            Repräsentation
	 * @return Array mit allen Varianten für diesen Zauber
	 */
	public String[] getDatenList(String zauberName, String repraesentation) {

		for (TextBausteine variante : textBausteinList) {
			if (variante.is(zauberName, repraesentation)) {
				return variante.getData();
			}
		}
		return new String[0];
	}
	
	/**
	 * 
	 * @param zVariante
	 *            fügt die übergebende Variante der Liste hinzu
	 */
	public void addZauberVariante(ZauberVariante zVariante) {

		zauberVariantenList.add(zVariante);
	}
	
	/**
	 * 
	 * @param zVariante
	 *            Entfernt die übergebende Variante
	 */
	public void removeZauberVariante(ZauberVariante zVariante) {

		zauberVariantenList.remove(zVariante);
	}
	
	/**
	 * 
	 * @param zauberName
	 *            Zaubername
	 * @param repraesentation
	 *            Repräsentation
	 * @return Zaubervarianten
	 */
	public ArrayList<ZauberVariante> getVariantenByZauberName(String zauberName,
			String repraesentation) {

		ArrayList<ZauberVariante> newList = new ArrayList<ZauberVariante>();
		for (ZauberVariante variante : zauberVariantenList) {
			if (variante.getZauberName().equals(zauberName) || "Alle".equals(zauberName)) {
				if (variante.getRepaesentation().equals(repraesentation)
						|| "Alle".equals(repraesentation)) {
					newList.add(variante);
				}
			}
		}
		return newList;
	}
	
	/**
	 * 
	 * @param zauberName
	 *            Zaubername
	 * @param repraesentation
	 *            Repräsentation
	 * @return Liste mit den Zaubervarianten
	 */
	public ArrayList<ZauberVariante> getVariantenByZauberUAlleName(String zauberName,
			String repraesentation) {

		ArrayList<ZauberVariante> newList = new ArrayList<ZauberVariante>();
		for (ZauberVariante variante : zauberVariantenList) {
			if (variante.getZauberName().equals(zauberName) || "Alle".equals(zauberName)
					|| "Alle".equals(variante.getZauberName())) {
				if (variante.getRepaesentation().equals(repraesentation)
						|| "Alle".equals(repraesentation)
						|| "Alle".equals(variante.getRepaesentation())) {
					newList.add(variante);
				}
			}
		}
		return newList;
	}
	
	/**
	 * 
	 * @return Gib eine Liste mit allen Zauberrepräsentationen zurück
	 */
	public ArrayList<String> getRepraesentationenList() {

		ArrayList<String> newRepList = new ArrayList<String>();
		newRepList.add("Alle");
		newRepList.add("Achaz");
		newRepList.add("Borbaradianer");
		newRepList.add("Druide");
		newRepList.add("Elf");
		newRepList.add("Geode");
		newRepList.add("Hexe");
		newRepList.add("Magier");
		newRepList.add("Schelm");
		newRepList.add("Scharlatan");
		return newRepList;
	}
	
	/**
	 * 
	 * @return Gib eine Liste mit allen Zaubernamen
	 */
	public ArrayList<String> getAlleZauberNamen() {

		ArrayList<String> newZauberNameList = new ArrayList<String>();
		newZauberNameList.add("Alle");
		newZauberNameList.add("Abvenenum reine Speise");
		newZauberNameList.add("Accuratum Zaubernadel");
		newZauberNameList.add("Adamantium Erzstruktur");
		newZauberNameList.add("Adlerauge Luchsenohr");
		newZauberNameList.add("Adlerschwinge Wolfsgestalt");
		newZauberNameList.add("Aeolitus Windgebraus");
		newZauberNameList.add("Aerofugo Vakuum");
		newZauberNameList.add("Aerogelo Atemqual");
		newZauberNameList.add("Alpgestalt");
		newZauberNameList.add("Analys Arkanstruktur");
		newZauberNameList.add("Ängste lindern");
		newZauberNameList.add("Animatio stummer Diener");
		newZauberNameList.add("Applicatus Zauberspeicher");
		newZauberNameList.add("Aquafaxius Wasserstrahl");
		newZauberNameList.add("Aquasphaero Wasserball");
		newZauberNameList.add("Arachnea Krabbeltier");
		newZauberNameList.add("Arcanovi Artefakt");
		newZauberNameList.add("Archofaxius Erzstrahl");
		newZauberNameList.add("Archosphaero Erzball");
		newZauberNameList.add("Armatrutz");
		newZauberNameList.add("Atemnot");
		newZauberNameList.add("Attributo");
		newZauberNameList.add("Aufgeblasen Abgehoben");
		newZauberNameList.add("Auge des Limbus");
		newZauberNameList.add("Aureolus Güldenglanz");
		newZauberNameList.add("Auris Nasus Oculus");
		newZauberNameList.add("Axxeleratus Blitzgeschwind");
		newZauberNameList.add("Balsam Salabunde");
		newZauberNameList.add("Band und Fessel");
		newZauberNameList.add("Bannbaladin");
		newZauberNameList.add("Beherrschung brechen");
		newZauberNameList.add("Beschwörung vereiteln");
		newZauberNameList.add("Bewegung stören");
		newZauberNameList.add("Blendwerk");
		newZauberNameList.add("Blick aufs Wesen");
		newZauberNameList.add("Blick durch fremde Augen");
		newZauberNameList.add("Blick in die Gedanken");
		newZauberNameList.add("Blick in die Vergangenheit");
		newZauberNameList.add("Blitz dich find");
		newZauberNameList.add("Brenne toter Stoff!");
		newZauberNameList.add("Bärenruhe Winterschlaf");
		newZauberNameList.add("Böser Blick");
		newZauberNameList.add("Caldofrigo heiß und kalt");
		newZauberNameList.add("Chamaelioni Mimikry");
		newZauberNameList.add("Chimaeroform Hybridgestalt");
		newZauberNameList.add("Chronoautos Zeitenfahrt");
		newZauberNameList.add("Chronoklassis Urfossil");
		newZauberNameList.add("Claudibus Clavistibor");
		newZauberNameList.add("Corpofesso Gliederschmerz");
		newZauberNameList.add("Corpofrigo Kälteschock");
		newZauberNameList.add("Cryptographo Zauberschrift");
		newZauberNameList.add("Custodosigil Diebesbann");
		newZauberNameList.add("Delicioso Gaumenschmaus");
		newZauberNameList.add("Desintegratus Pulverstaub");
		newZauberNameList.add("Destructibo Arcanitas");
		newZauberNameList.add("Dichter und Denker");
		newZauberNameList.add("Dschinnenruf");
		newZauberNameList.add("Dunkelheit");
		newZauberNameList.add("Duplicatus Doppelbild");
		newZauberNameList.add("Dämonenbann");
		newZauberNameList.add("Ecliptifactus Schattenkraft");
		newZauberNameList.add("Eigenschaft wiederherstellen");
		newZauberNameList.add("Eigne Ängste quälen dich!");
		newZauberNameList.add("Einfluss bannen");
		newZauberNameList.add("Eins mit der Natur");
		newZauberNameList.add("Eisenrost und Patina");
		newZauberNameList.add("Eiseskälte Kämpferherz");
		newZauberNameList.add("Eiswirbel");
		newZauberNameList.add("Elementarbann");
		newZauberNameList.add("Elementarer Diener");
		newZauberNameList.add("Elfenstimme Flötenton");
		newZauberNameList.add("Erinnerung verlasse dich!");
		newZauberNameList.add("Exposami Lebenskraft");
		newZauberNameList.add("Falkenauge Meisterschuss");
		newZauberNameList.add("Favilludo Funkentanz");
		newZauberNameList.add("Feuersturm");
		newZauberNameList.add("Firnlauf");
		newZauberNameList.add("Flim Flam Funkel");
		newZauberNameList.add("Fluch der Pestilenz");
		newZauberNameList.add("Foramen Foraminor");
		newZauberNameList.add("Fortifex arkane Wand");
		newZauberNameList.add("Frigifaxius Eisstrahl");
		newZauberNameList.add("Frigisphaero Eisball");
		newZauberNameList.add("Fulminictus Donnerkeil");
		newZauberNameList.add("Gardianum Zauberschild");
		newZauberNameList.add("Gedankenbilder Elfenruf");
		newZauberNameList.add("Gefunden!");
		newZauberNameList.add("Gefäß der Jahre");
		newZauberNameList.add("Geisterbann");
		newZauberNameList.add("Geisterruf");
		newZauberNameList.add("Gletscherwand");
		newZauberNameList.add("Granit und Marmor");
		newZauberNameList.add("Große Gier");
		newZauberNameList.add("Große Verwirrung");
		newZauberNameList.add("Halluzination");
		newZauberNameList.add("Harmlose Gestalt");
		newZauberNameList.add("Hartes schmelze!");
		newZauberNameList.add("Haselbusch und Ginsterkraut");
		newZauberNameList.add("Heilkraft bannen");
		newZauberNameList.add("Hellsicht trüben");
		newZauberNameList.add("Herbeirufung vereiteln");
		newZauberNameList.add("Herr über das Tierreich");
		newZauberNameList.add("Herzschlag ruhe!");
		newZauberNameList.add("Hexenblick");
		newZauberNameList.add("Hexengalle");
		newZauberNameList.add("Hexenholz");
		newZauberNameList.add("Hexenknoten");
		newZauberNameList.add("Hexenkrallen");
		newZauberNameList.add("Hexenspeichel");
		newZauberNameList.add("Hilfreiche Tatze, rettende Schwinge");
		newZauberNameList.add("Holterdipolter");
		newZauberNameList.add("Horriphobus Schreckgestalt");
		newZauberNameList.add("Humofaxius Humusstrahl");
		newZauberNameList.add("Humosphaero Humusball");
		newZauberNameList.add("Höllenpein zerreiße dich!");
		newZauberNameList.add("Ignifaxius Flammenstrahl");
		newZauberNameList.add("Ignisphaero Feuerball");
		newZauberNameList.add("Ignorantia Ungesehn");
		newZauberNameList.add("Illusion auflösen");
		newZauberNameList.add("Immortalis Lebenszeit");
		newZauberNameList.add("Imperavi Handlungszwang");
		newZauberNameList.add("Impersona Maskenbild");
		newZauberNameList.add("Infinitum Immerdar");
		newZauberNameList.add("Invercano Spiegeltrick");
		newZauberNameList.add("Invocatio maior");
		newZauberNameList.add("Invocatio minor");
		newZauberNameList.add("Iribaars Hand");
		newZauberNameList.add("Juckreiz, dämlicher!");
		newZauberNameList.add("Karnifilio Raserei");
		newZauberNameList.add("Katzenaugen");
		newZauberNameList.add("Klarum Purum");
		newZauberNameList.add("Klickeradoms");
		return addWeitereZauber(newZauberNameList);
	}
	
	/**
	 * Nötig durch die maximale Methodenlänge
	 * 
	 * @param newZauberNameList
	 *            Liste mit den Zaubernamen
	 * @return Gib eine Liste mit allen Zaubernamen
	 */
	private ArrayList<String> addWeitereZauber(ArrayList<String> newZauberNameList) {

		newZauberNameList.add("Koboldgeschenk");
		newZauberNameList.add("Koboldovision");
		newZauberNameList.add("Komm Kobold Komm");
		newZauberNameList.add("Krabbelnder Schrecken");
		newZauberNameList.add("Kraft des Erzes");
		newZauberNameList.add("Krähenruf");
		newZauberNameList.add("Krötensprung");
		newZauberNameList.add("Kulminatio Kugelblitz");
		newZauberNameList.add("Kusch!");
		newZauberNameList.add("Körperlose Reise");
		newZauberNameList.add("Lach dich gesund");
		newZauberNameList.add("Lachkrampf");
		newZauberNameList.add("Langer Lulatsch");
		newZauberNameList.add("Last des Alters");
		newZauberNameList.add("Leib der Erde");
		newZauberNameList.add("Leib der Wogen");
		newZauberNameList.add("Leib des Eises");
		newZauberNameList.add("Leib des Erzes");
		newZauberNameList.add("Leib des Feuers");
		newZauberNameList.add("Leib des Windes");
		newZauberNameList.add("Leidensbund");
		newZauberNameList.add("Levthans Feuer");
		newZauberNameList.add("Limbus versiegeln");
		newZauberNameList.add("Lockruf und Feenfüße");
		newZauberNameList.add("Lunge des Leviatan");
		newZauberNameList.add("Madas Spiegel");
		newZauberNameList.add("Magischer Raub");
		newZauberNameList.add("Mahlstrom");
		newZauberNameList.add("Malmkreis");
		newZauberNameList.add("Manifesto Element");
		newZauberNameList.add("Meister der Elemente");
		newZauberNameList.add("Meister minderer Geister");
		newZauberNameList.add("Memorabia Falsifir");
		newZauberNameList.add("Memorans Gedächtniskraft");
		newZauberNameList.add("Menetekel Flammenschrift");
		newZauberNameList.add("Metamagie neutralisieren");
		newZauberNameList.add("Metamorpho Felsenform");
		newZauberNameList.add("Metamorpho Gletscherform");
		newZauberNameList.add("Motoricus");
		newZauberNameList.add("Movimento Dauerlauf");
		newZauberNameList.add("Murks und Patz");
		newZauberNameList.add("Nackedei");
		newZauberNameList.add("Nebelleib");
		newZauberNameList.add("Nebelwand und Morgendunst");
		newZauberNameList.add("Nekropathia Seelenreise");
		newZauberNameList.add("Niederhöllen Eisgestalt");
		newZauberNameList.add("Nihilogravo Schwerelos");
		newZauberNameList.add("Nuntiovolo Botenvogel");
		newZauberNameList.add("Objecto Obscuro");
		newZauberNameList.add("Objectofixo");
		newZauberNameList.add("Objectovoco");
		newZauberNameList.add("Objekt entzaubern");
		newZauberNameList.add("Oculus Astralis");
		newZauberNameList.add("Odem Arcanum");
		newZauberNameList.add("Orcanofaxius Luftstrahl");
		newZauberNameList.add("Orcanosphaero Orkanball");
		newZauberNameList.add("Orkanwand");
		newZauberNameList.add("Pandaemonium");
		newZauberNameList.add("Panik überkomme euch!");
		newZauberNameList.add("Papperlapapp");
		newZauberNameList.add("Paralysis starr wie Stein");
		newZauberNameList.add("Pectetondo Zauberhaar");
		newZauberNameList.add("Penetrizzel Tiefenblick");
		newZauberNameList.add("Pentagramma Sphärenbann");
		newZauberNameList.add("Pestilenz erspüren");
		newZauberNameList.add("Pfeil der Luft");
		newZauberNameList.add("Pfeil des Eises");
		newZauberNameList.add("Pfeil des Erzes");
		newZauberNameList.add("Pfeil des Feuers");
		newZauberNameList.add("Pfeil des Humus");
		newZauberNameList.add("Pfeil des Wassers");
		newZauberNameList.add("Planastrale Anderswelt");
		newZauberNameList.add("Plumbumbarum schwerer Arm");
		newZauberNameList.add("Projektimago Ebenbild");
		newZauberNameList.add("Protectionis Kontrabann");
		newZauberNameList.add("Psychostabilis");
		newZauberNameList.add("Radau");
		newZauberNameList.add("Reflectimago Spiegelschein");
		newZauberNameList.add("Reptilea Natternest");
		newZauberNameList.add("Respondami");
		newZauberNameList.add("Reversalis Revidum");
		newZauberNameList.add("Ruhe Körper, ruhe Geist");
		newZauberNameList.add("Salander Mutander");
		newZauberNameList.add("Sanftmut");
		newZauberNameList.add("Sapefacta Zauberschwamm");
		newZauberNameList.add("Satuarias Herrlichkeit");
		newZauberNameList.add("Schabernack");
		newZauberNameList.add("Schadenszauber bannen");
		newZauberNameList.add("Schelmenkleister");
		newZauberNameList.add("Schelmenlaune");
		newZauberNameList.add("Schelmenmaske");
		newZauberNameList.add("Schelmenrausch");
		newZauberNameList.add("Schleier der Unwissenheit");
		newZauberNameList.add("Schwarz und Rot");
		newZauberNameList.add("Schwarzer Schrecken");
		newZauberNameList.add("Seelenfeuer Lichterloh");
		newZauberNameList.add("Seelentier erkennen");
		newZauberNameList.add("Seelenwanderung");
		newZauberNameList.add("Seidenweich Schuppengleich");
		newZauberNameList.add("Seidenzunge Elfenwort");
		newZauberNameList.add("Sensattacco Meisterstreich");
		newZauberNameList.add("Sensibar Empathicus");
		newZauberNameList.add("Serpentialis Schlangenleib");
		newZauberNameList.add("Silentium");
		newZauberNameList.add("Sinesigil unerkannt");
		newZauberNameList.add("Skelettarius");
		newZauberNameList.add("Solidirid Weg aus Licht");
		newZauberNameList.add("Somnigravis tiefer Schlaf");
		newZauberNameList.add("Spinnenlauf");
		newZauberNameList.add("Spurlos Trittlos");
		newZauberNameList.add("Standfest Katzengleich");
		newZauberNameList.add("Staub wandle!");
		newZauberNameList.add("Stein wandle!");
		newZauberNameList.add("Stillstand");
		newZauberNameList.add("Sumpfstrudel");
		newZauberNameList.add("Sumus Elixiere");
		newZauberNameList.add("Tauschrausch");
		newZauberNameList.add("Tempus Stasis");
		newZauberNameList.add("Tiere besprechen");
		newZauberNameList.add("Tiergedanken");
		newZauberNameList.add("Tlalucs Odem Pestgestank");
		newZauberNameList.add("Totes handle!");
		newZauberNameList.add("Transformatio Formgestalt");
		newZauberNameList.add("Transmutare Körperform");
		newZauberNameList.add("Transversalis Teleport");
		newZauberNameList.add("Traumgestalt");
		newZauberNameList.add("Unberührt von Satinav");
		newZauberNameList.add("Unitatio Geistesbund");
		newZauberNameList.add("Unsichtbare Jäger");
		newZauberNameList.add("Verschwindibus");
		newZauberNameList.add("Verständigung stören");
		newZauberNameList.add("Verwandlung beenden");
		newZauberNameList.add("Veränderung aufheben");
		newZauberNameList.add("Vipernblick");
		newZauberNameList.add("Visibili Vanitar");
		newZauberNameList.add("Vocolimbo hohler Klang");
		newZauberNameList.add("Vogelzwitschern Glockenspiel");
		newZauberNameList.add("Wand aus Dornen");
		newZauberNameList.add("Wand aus Erz");
		newZauberNameList.add("Wand aus Flammen");
		newZauberNameList.add("Wand aus Wogen");
		newZauberNameList.add("Warmes Blut");
		newZauberNameList.add("Wasseratem");
		newZauberNameList.add("Weiches erstarre!");
		newZauberNameList.add("Weihrauchwolke Wohlgeruch");
		newZauberNameList.add("Weisheit der Bäume");
		newZauberNameList.add("Weiße Mähn und goldener Huf");
		newZauberNameList.add("Wellenlauf");
		newZauberNameList.add("Wettermeisterschaft");
		newZauberNameList.add("Widerwille Ungemach");
		newZauberNameList.add("Windhose");
		newZauberNameList.add("Windstille");
		newZauberNameList.add("Wipfellauf");
		newZauberNameList.add("Xenographus Schriftenkunde");
		newZauberNameList.add("Zagibu Ubigaz");
		newZauberNameList.add("Zappenduster");
		newZauberNameList.add("Zauberklinge Geisterspeer");
		newZauberNameList.add("Zaubernahrung Hungerbann");
		newZauberNameList.add("Zauberwesen der Natur");
		newZauberNameList.add("Zauberzwang");
		newZauberNameList.add("Zorn der Elemente");
		newZauberNameList.add("Zunge lähmen");
		newZauberNameList.add("Zwingtanz");
		return newZauberNameList;
	}
}
